#ifndef KEYBOARDHANDLER_H
#define KEYBOARDHANDLER_H
#include "KeyboardInput.h"
#include "StompedReality/Core/OS/SystemMessageListener.h"
namespace StompedReality
{
namespace Input
{
/*!
 * \author	Stefan Kazalski
 *
 * \brief	Keyboard handler.
 *
 *    Handels keyboard input updates.
 */
class KeyboardHandler : public StompedReality::Core::SystemMessageListener {
 protected:

  KeyboardInput* m_Keyboard;

 public:

  //! \brief	Constructor.
  KeyboardHandler( );

  //! \brief	Destructor.
  virtual ~KeyboardHandler( );

  //! \brief	Keyboard setter.
  //!			The keyboard will be updated by update keys.
  //! \param	keyboard The keyboard.
  void SetKeyboard( KeyboardInput* keyboard );

  //! \brief	Updates the keys.
  virtual void UpdateKeys( ) = 0;

  //! \brief	Initialize handler.
  virtual void Intialize( ) = 0;

  //! \brief	Processes a system message.
  //! \param	msg		The system message.
  virtual void ProcessMessage( StompedReality::Core::SystemMessage* msg ) = 0;

};

}
}
#endif // KEYBOARDHANDLER_H
